home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / programming / e / amsp4e / examples / secondstep.e < prev   
Text File  |  1999-06-14  |  2KB  |  150 lines

  1. /*
  2. ** Example number 2: Second Step
  3. **
  4. ** DESCRIPTION:
  5. ** Open window and show three bobs.
  6. ** Bobs is move!
  7. **
  8. */
  9.  
  10. MODULE    '*amosbobs',
  11.     'intuition/screens'
  12.  
  13. DEF amobjects,s:PTR TO screen
  14. DEF x1,y1,x2,y2,x3,y3,k1,k2,k3
  15.  
  16. PROC main()
  17.  
  18.     -> Open screen.
  19.     IF (s:=OpenS(320,256,3,0,'SecondStep'))=0
  20.         err('No screen\n');
  21.     ENDIF
  22.  
  23.     -> Load amos objects.
  24.     amobjects:=mLoadIB('amobjects.abk',s);
  25.  
  26.     -> set palette.
  27.     mGetIBPalette(amobjects,s.viewport)
  28.  
  29.     -> is it?
  30.     IF amobjects=NIL
  31.         CloseS(s)
  32.         err('no amobjects.abk\n');
  33.     ENDIF
  34.  
  35.     -> k1,k2,k3
  36.     -> is 1 - left and up.
  37.     -> is 2 - right and up.
  38.     -> is 3 - left and down.
  39.     -> is 4 - right and down.
  40.  
  41.     -> coords.
  42.     x1:=0; y1:=0; k1:=4    -> 1 bob
  43.     x2:=160; y1:=100; k2:=2    -> 2 bob
  44.     x3:=160; y1:=0; k3:=3    -> 3 bob
  45.  
  46.     -> simple image
  47.     mPasteQuickIB(s.rastport,amobjects,100,100,7);
  48.  
  49.     mIBUpdateOff()
  50.     REPEAT
  51.             mClearIB(s.rastport,amobjects)
  52.             -> short procedure for move.
  53.             handlebobs();
  54.  
  55.             -> wait a moment...
  56.             mDrawIB(s.rastport,amobjects)
  57.             Delay(1)
  58.     UNTIL Mouse()=1
  59.  
  60.     -> flush objects.
  61.     mEraseIB(amobjects);
  62.  
  63.     -> and good bye ;).
  64.     CloseS(s); CleanUp();
  65. ENDPROC
  66. -> ***
  67.  
  68. PROC err(name)
  69. WriteF(name)
  70. CleanUp(0)
  71. ENDPROC
  72.  
  73. PROC handlebobs()
  74.  
  75. IF k1=1 ; DEC x1; DEC y1 ; ENDIF
  76. IF k1=2 ; INC x1; DEC y1 ; ENDIF
  77. IF k1=3 ; DEC x1; INC y1 ; ENDIF
  78. IF k1=4 ; INC x1; INC y1 ; ENDIF
  79.  
  80. IF k2=1 ; DEC x2; DEC y2 ; ENDIF
  81. IF k2=2 ; INC x2; DEC y2 ; ENDIF
  82. IF k2=3 ; DEC x2; INC y2 ; ENDIF
  83. IF k2=4 ; INC x2; INC y2 ; ENDIF
  84.  
  85. IF k3=1 ; DEC x3; DEC y3 ; ENDIF
  86. IF k3=2 ; INC x3; DEC y3 ; ENDIF
  87. IF k3=3 ; DEC x3; INC y3 ; ENDIF
  88. IF k3=4 ; INC x3; INC y3 ; ENDIF
  89.  
  90. -> BOB1
  91. IF x1<0
  92.     IF k1=1 THEN k1:=2
  93.     IF k1=3 THEN k1:=4
  94. ENDIF
  95. IF x1>280
  96.     IF k1=2 THEN k1:=1
  97.     IF k1=4 THEN k1:=3
  98. ENDIF
  99. IF y1<0
  100.     IF k1=1 THEN k1:=3
  101.     IF k1=2 THEN k1:=4
  102. ENDIF
  103. IF y1>160
  104.     IF k1=3 THEN k1:=1
  105.     IF k1=4 THEN k1:=2
  106. ENDIF
  107.  
  108. -> BOB2
  109. IF x2<0
  110.     IF k2=1 THEN k2:=2
  111.     IF k2=3 THEN k2:=4
  112. ENDIF
  113. IF x2>280
  114.     IF k2=2 THEN k2:=1
  115.     IF k2=4 THEN k2:=3
  116. ENDIF
  117. IF y2<0
  118.     IF k2=1 THEN k2:=3
  119.     IF k2=2 THEN k2:=4
  120. ENDIF
  121. IF y2>160
  122.     IF k2=3 THEN k2:=1
  123.     IF k2=4 THEN k2:=2
  124. ENDIF
  125.  
  126. -> BOB3
  127. IF x3<0
  128.     IF k3=1 THEN k3:=2
  129.     IF k3=3 THEN k3:=4
  130. ENDIF
  131. IF x3>280
  132.     IF k3=2 THEN k3:=1
  133.     IF k3=4 THEN k3:=3
  134. ENDIF
  135. IF y3<0
  136.     IF k3=1 THEN k3:=3
  137.     IF k3=2 THEN k3:=4
  138. ENDIF
  139. IF y3>160
  140.     IF k3=3 THEN k3:=1
  141.     IF k3=4 THEN k3:=2
  142. ENDIF
  143.  
  144. mIB(s.rastport,amobjects,1,x1,y1,1);
  145. mIB(s.rastport,amobjects,2,x2,y2,1);
  146. mIB(s.rastport,amobjects,3,x3,y3,1);
  147. mIB(s.rastport,amobjects,4,s.mousex,s.mousey,0);
  148.  
  149. ENDPROC
  150.